# Maintainer: Dan McGee <dan@archlinux.org>
# Contributor: Eli Schwartz <eschwartz@archlinux.org>
# Contributor: Sebastien Binet <binet@lblbox>

pkgname=('python-pip' 'python2-pip')
pkgver=20.3.4
pkgrel=1
pkgdesc="The PyPA recommended tool for installing Python packages"
url="https://pip.pypa.io/"
arch=('any')
license=('MIT')
_deps=('appdirs' 'cachecontrol' 'colorama' 'contextlib2' 'distlib' 'distro' 'html5lib'
       'packaging' 'pep517' 'progress' 'requests' 'retrying' 'resolvelib' 'setuptools' 'six' 'toml'
       # add these until https://github.com/pypa/pip/issues/5354#issuecomment-672678167 is resolved
       'pyopenssl')
makedepends=("${_deps[@]/#/python-}" "${_deps[@]/#/python2-}" 'python2-ipaddress' 'python-sphinx'
             'python-sphinx-inline-tabs')
checkdepends=('python-pytest-runner' 'python-scripttest' 'python-virtualenv' 'python-pretend'
              'python-yaml' 'python-mock' 'python-freezegun' 'python-cryptography' 'python-pip'
              'python-wheel' 'python-werkzeug' 'python-csv23' 'git' 'subversion')
source=("pip-${pkgver}.tar.gz::https://github.com/pypa/pip/archive/${pkgver}.tar.gz"
        resolvelib-0.5.5.patch)
sha512sums=('30e9d6d5dfc54681ca07e5701e26cdde202326848f6b37a013fe1fcc38402efa81284e15d7750de97d871e0da995cf5363e5c9676a036d271ff06bb0052cc1ec'
            'f339a20e965c583c1dc741d9fff90749aab049d591f0ac974e2187d4f41842661802b96266e8e35454b65d61d65c337a770d58b81119af07483fde0eda48001b')

shopt -s extglob
prepare() {
  cd pip-$pkgver

  # Backported from:
  # https://github.com/pypa/pip/commit/0d39ae9734d054c25e48e2da7ddb76545e5de330
  patch -p1 -i ../resolvelib-0.5.5.patch

  # Remove certifi usage
  sed -i 's|from pip._vendor.certifi import where|where = lambda: "/etc/ssl/certs/ca-certificates.crt"|' src/pip/_internal/commands/debug.py

  rm -rf src/pip/_vendor/!(__init__.py)
  sed -i -e 's/DEBUNDLED = False/DEBUNDLED = True/' \
            src/pip/_vendor/__init__.py
}

build() {
  cd pip-$pkgver

  python setup.py build
  python2 setup.py build

  cd docs/
  PYTHONPATH="$srcdir/pip-$pkgver/src/" python pip_sphinxext.py
  PYTHONPATH="$srcdir/pip-$pkgver/src/" sphinx-build -W -b man -d build/doctrees/man man build/man -c html
  mkdir -p build/man-pip2
  cd build/man
  for manfile in *; do
    sed 's/pip/pip2/g;s/PIP/PIP2/g' $manfile > ../man-pip2/${manfile/pip/pip2}
  done
}

check() {
  cd "$srcdir"/pip-$pkgver
  pip wheel -w tests/data/common_wheels -r tools/requirements/tests-common_wheels.txt
  python setup.py install --root="$PWD/tmp_install" --optimize=1
  # appdirs: https://github.com/pypa/pip/issues/7784
  # build_env: TODO weird looking errors
  # virtualenv: https://github.com/pypa/pip/issues/8273
  PYTHONPATH="$PWD/tmp_install/usr/lib/python3.9/site-packages" PATH="$PWD/tmp_install/usr/bin:$PATH" \
    python -m pytest -m unit --junit-xml=junit/unit-test.xml --deselect tests/unit/test_appdirs.py::TestSiteConfigDirs::test_site_config_dirs_linux \
                                                             --deselect tests/unit/test_appdirs.py::TestSiteConfigDirs::test_site_config_dirs_linux_override \
                                                             --deselect tests/unit/test_appdirs.py::TestSiteConfigDirs::test_site_config_dirs_linux_empty \
                                                             --deselect tests/unit/test_appdirs.py::TestUserDataDir::test_user_data_dir_osx \
                                                             --deselect tests/unit/test_appdirs.py::TestUserConfigDir::test_user_config_dir_osx \
                                                             --deselect tests/unit/test_build_env.py::test_build_env_requirements_check \
                                                             --deselect tests/unit/test_build_env.py::test_build_env_overlay_prefix_has_priority \
                                                             --deselect tests/unit/test_build_env.py::test_build_env_isolation \
                                                             --deselect tests/unit/test_build_env.py::test_build_env_allow_only_one_install \
                                                             --deselect tests/unit/test_direct_url_helpers.py::test_from_link_vcs_with_source_dir_obtains_commit_id \
                                                             --deselect tests/unit/test_direct_url_helpers.py::test_from_link_vcs_without_source_dir \
                                                             --deselect tests/unit/test_wheel_builder.py::test_should_cache_git_sha \
                                                             --deselect tests/unit/resolution_resolvelib/test_requirement.py::test_new_resolver_full_resolve
}

package_python-pip() {
  depends=("${_deps[@]/#/python-}")

  cd pip-$pkgver
  python setup.py install --prefix=/usr --root="$pkgdir"

  install -D -m644 LICENSE.txt \
	  "$pkgdir/usr/share/licenses/$pkgname/LICENSE"

  install -Dm644 -t "$pkgdir"/usr/share/man/man1 docs/build/man/*

  PYTHONPATH="$pkgdir"/usr/lib/python3.9/site-packages "$pkgdir"/usr/bin/pip completion --bash \
    | install -Dm644 /dev/stdin "$pkgdir"/usr/share/bash-completion/completions/pip
  PYTHONPATH="$pkgdir"/usr/lib/python3.9/site-packages "$pkgdir"/usr/bin/pip completion --fish \
    | install -Dm644 /dev/stdin "$pkgdir"/usr/share/fish/vendor_completions.d/pip.fish
}

package_python2-pip() {
  depends=("${_deps[@]/#/python2-}" 'python2-ipaddress')
  conflicts=('python-pyinstall')
  replaces=('python-pyinstall')

  cd pip-$pkgver
  python2 setup.py install --prefix=/usr --root="$pkgdir"

  mv "$pkgdir/usr/bin/pip" "$pkgdir/usr/bin/pip2"
  sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|" \
    "${pkgdir}"/usr/lib/python2.7/site-packages/pip/__init__.py
  python2 -m compileall "${pkgdir}"/usr/lib/python2.7/site-packages/pip/__init__.py

  install -D -m644 LICENSE.txt \
	  "$pkgdir/usr/share/licenses/$pkgname/LICENSE"

  install -Dm644 -t "$pkgdir"/usr/share/man/man1 docs/build/man-pip2/*

  PYTHONPATH="$pkgdir"/usr/lib/python2.7/site-packages "$pkgdir"/usr/bin/pip2 completion --bash \
    | install -Dm644 /dev/stdin "$pkgdir"/usr/share/bash-completion/completions/pip2
  PYTHONPATH="$pkgdir"/usr/lib/python2.7/site-packages "$pkgdir"/usr/bin/pip2 completion --fish \
    | install -Dm644 /dev/stdin "$pkgdir"/usr/share/fish/vendor_completions.d/pip2.fish
}
